TAREA 1

Está usted leyendo la versión RMarkdown de la Tarea 1 de la clase de Visualización de Datos de la Maestría en Periodismo sobre Políticas Públicas.

Estas son las bases de datos y paquetes que utilizaremos y/o necesitamos instalar.

Sys.setlocale("LC_ALL", "es_ES.UTF-8")
## [1] "es_ES.UTF-8/es_ES.UTF-8/es_ES.UTF-8/C/es_ES.UTF-8/en_US.UTF-8"
options(scipen = 999)

# Librerias a utilizar
library(pacman)
library(leaflet) 
library(htmlwidgets)
library(webshot) 
library(DT)
library(kableExtra)
library(prettydoc)
library(rmarkdown)
p_load(tidyverse, 
       plotly,
       sf,
       viridis,
       readxl, 
       scales)

# Bases de datos
idh <- read_csv("01_Datos/Indice de Desarrollo Humano.csv")
## Parsed with column specification:
## cols(
##   Year = col_double(),
##   Clave = col_character(),
##   CVE_ENT = col_character(),
##   Entidad = col_character(),
##   CVE_MUN = col_character(),
##   Municipio = col_character(),
##   CODGEO = col_character(),
##   Indicador = col_character(),
##   Ponderador = col_double(),
##   Valor = col_double()
## )
mpios <- st_read("01_datos/mpios.geojson")
## Reading layer `mpios_con_menos_islas_aun' from data source `/Users/arturo/R_CIDE/Arturo_MPPP/01_datos/mpios.geojson' using driver `GeoJSON'
## Simple feature collection with 2465 features and 9 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -118.3651 ymin: 14.5321 xmax: -86.71041 ymax: 32.71865
## CRS:            4326
recreo <- read_csv("01_datos/denue_cvs.csv")
## Parsed with column specification:
## cols(
##   .default = col_character(),
##   id = col_double(),
##   codigo_act = col_double(),
##   numero_ext = col_double(),
##   edificio_e = col_double(),
##   numero_int = col_double(),
##   cod_postal = col_double(),
##   cve_ent = col_double(),
##   cve_mun = col_double(),
##   cve_loc = col_double(),
##   manzana = col_double(),
##   telefono = col_double(),
##   latitud = col_double(),
##   longitud = col_double()
## )
## See spec(...) for full column specifications.
diamonds 
## # A tibble: 53,940 x 10
##    carat cut       color clarity depth table price     x     y     z
##    <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
##  1 0.23  Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
##  2 0.21  Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
##  3 0.23  Good      E     VS1      56.9    65   327  4.05  4.07  2.31
##  4 0.290 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
##  5 0.31  Good      J     SI2      63.3    58   335  4.34  4.35  2.75
##  6 0.24  Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48
##  7 0.24  Very Good I     VVS1     62.3    57   336  3.95  3.98  2.47
##  8 0.26  Very Good H     SI1      61.9    55   337  4.07  4.11  2.53
##  9 0.22  Fair      E     VS2      65.1    61   337  3.87  3.78  2.49
## 10 0.23  Very Good H     VS1      59.4    61   338  4     4.05  2.39
## # … with 53,930 more rows

EL MÁGICO MUNDO DE LAS GRÁFICAS

La siguiente gráfica nos muestra el número de establecimientos recreativos (centros culturales, sociales, recreativos y deportivos) por estado de acuerdo a información del DENUE de INEGI.

La última gráfica (interactiva) permite conocer el número preciso de establecimientos de estos rubros en cada estado al pasar el cursor por las distintas columnas horizontales.

centros <- recreo %>% 
  group_by(entidad, tipo_asent, municipio) %>% 
  count()

centros <- recreo %>% 
  count(entidad) %>% 
  ggplot(aes(x = entidad,
             y = n,
             fill = entidad,
             alpha = 0.3,
             text= paste0("<b>Entidad:</b>", entidad, "<br>",
                          "<b>Establecimientos:</b>", n, "<br>"))) +
  geom_col() +
  coord_flip() +
  labs(title = "Servicios de esparcimiento, culturales y deportivos, y otros servicios recreativos.",
       subtitle = "Año: 2019", 
       caption = "Fuente: DENUE") +
  theme(legend.position = "none")

centros

ggplotly(tooltip = "text")  %>% 
  config(displayModeBar = F)

Y AHORA… ¡MAPAS!

Mapa con el valor del Índice de Desarrollo Humano para los municipios del estado de Chiapas para el año 2015.

Imágenes fijas con distintas paletas de colores y una interactiva que permite conocer el valor y el nombre del municipio al navegar por el mapa y hacer click.

# Generamos base de datos 
idh_chiapas <- idh %>% 
  filter(Year == 2015) %>% 
  filter(Entidad == "Chiapas")

mpios_chiapas <- mpios %>% 
  filter(NOM_ENT == "Chiapas")

# Combinamos las bases
mapa_chiapas <- merge(x = mpios_chiapas,
                     y = idh_chiapas,
                     by.x = "CVEGEO", 
                     by.y = "CODGEO", 
                     all.y = TRUE)

# Checamos que sea un objeto sf y que sea la geometría que queremos
class(mapa_chiapas)
## [1] "sf"         "data.frame"
plot(mapa_chiapas, max.plot = 1) 

# Hacemos el mapa en ggplot()

# La versión sencilla por tono de color en relación al Valor. 
mapa_chiapas %>% 
  ggplot(aes(fill = Valor)) + 
  geom_sf() 

# Versión 2 en la que metemos la paleta Viridis.
mapa_chiapas %>% 
  ggplot(aes(fill = Valor)) + 
  geom_sf() + 
  scale_fill_gradientn(colors = viridis(begin = 0, 
                                        end = 1, 
                                        n = 10))

# Versión 3 con información y limpiando la presentación-diseño del mapa e incluyendo información para interactividad así como labels, temas, etc.
mapa_chiapas %>% 
  ggplot(aes(fill = Valor,
             text= paste0("<b>Municipio: </b>", Municipio, "<br>",
                          "<b>Valor: </b>", Valor, "<br>"))) + 
  geom_sf(color = "gray80") + 
  scale_fill_gradientn(colors = viridis(begin = 0, 
                                        end = 1, 
                                        n = 10)) + 
  labs(title = "Índice de Desarrollo Humano <br>para el Estado de Chiapas",
       subtitle = "Año: 2015", 
       caption = "Fuente: Informe de Desarrollo Humano Municipal 2010-2015.") + 
  guides(fill = guide_colourbar(title.position="top", title.hjust = 0.5)) + 
  theme_bw() + 
  theme(legend.position = "bottom") + 
  theme(axis.text = element_blank(), 
        panel.grid = element_blank(), 
        panel.border = element_blank(), 
        panel.background = element_rect(),
        axis.ticks = element_blank()) + 
  theme(plot.title = element_text(hjust = 0.5, 
                                  colour = "gray10", 
                                  family = "Arial", 
                                  face = "bold", 
                                  size = 15), 
        plot.subtitle = element_text(hjust = 0.5, 
                                     colour = "gray50", 
                                     family = "Arial", 
                                     face = "bold", 
                                     size = 15), 
        plot.caption = element_text(colour = "gray50", 
                                    hjust = 1))

  ggplotly(tooltip = "text")  %>% 
    config(displayModeBar = F)

y para cerrar… ¡UNA TABLA!

Presentamos una tabla con 10 diamantes (y sus características: quilates, corte, color, claridad, forma y precio) que se pondrán a la venta (con los mismos precios sugeridos) para recabar fondos para el CIDE. La tabla responde al cursor al pasar por ella.

  dt <- diamonds[1:10, 1:7]
  
  dt %>%
    kbl() %>%
    kable_paper("hover", 
                full_width = F)
carat cut color clarity depth table price
0.23 Ideal E SI2 61.5 55 326
0.21 Premium E SI1 59.8 61 326
0.23 Good E VS1 56.9 65 327
0.29 Premium I VS2 62.4 58 334
0.31 Good J SI2 63.3 58 335
0.24 Very Good J VVS2 62.8 57 336
0.24 Very Good I VVS1 62.3 57 336
0.26 Very Good H SI1 61.9 55 337
0.22 Fair E VS2 65.1 61 337
0.23 Very Good H VS1 59.4 61 338

FIN DE LA TAREA

GRACIAS POR SU ATENCIÓN.